/** /////////////////////////////////////////////////////////////////////////////////
 * @author	Jaeger, Mathias
 * @class 	umgebung.js dient dazu Umgebungselemente zu erstellen
 *//////////////////////////////////////////////////////////////////////////////////

abschnittsTrigger = function() {

	// abschnittsTrigger
	var abschnittsTrigger = new Physijs.BoxMesh(new THREE.CubeGeometry(10, 1, 100), lTransparentT, 0);
	abschnittsTrigger.position.x = 800;
	abschnittsTrigger.position.y = 7;

	abschnittsTrigger.__dirtyPosition = true;
	abschnittsTrigger.__dirtyRotation = true;

	abschnittsTrigger._physijs.collision_flags = 4;
	abschnittsTrigger.addEventListener('collision', function() {

		abschnittsTrigger.position.x += 400;
		abschnittsTrigger.__dirtyPosition = true;
		abschnittsTrigger.__dirtyRotation = true;

		/* Hier wird jeweils das erste Element der Queue entnommen, neu positioniert und wieder ans Ende der Queue angehaengt.
		* Bei den Queues, die Physijs-Objekte halten muss nach der Positionierung __dirtyPosition (und __dirtyRotation)
		* erneut auf true gesetzt werden um zu verhindern, dass das jeweilige Objekt sofort wieder seine vorige Position ein nimmt.  */

		// Trigger Links verschieben
		var trigger1 = queueTriggerAussenLinks.shift();
		trigger1.position.x += strassenElementAnzahl * 400;
		trigger1.__dirtyPosition = true;
		trigger1.__dirtyRotation = true;
		queueTriggerAussenLinks.push(trigger1);

		// Trigger Rechts verschieben
		var trigger4 = queueTriggerAussenRechts.shift();
		trigger4.position.x += strassenElementAnzahl * 400;
		trigger4.__dirtyPosition = true;
		trigger4.__dirtyRotation = true;
		queueTriggerAussenRechts.push(trigger4);
		/* Statischen Umgebungsabschnitt verschieben. Hier allerding ohne  __dirtyPosition oder __dirtyRotation,
		 * da keine Physijs-Objekte, sondern THREE.js-Objekte, die diese Eigenschaften nicht besitzen*/
		var umgebungsGruppe = queueStatischeUmgebung.shift();
		umgebungsGruppe.position.x += strassenElementAnzahl * 400;
		umgebungsGruppe.position.y += 0;
		queueStatischeUmgebung.push(umgebungsGruppe);

		for ( i = 0; i < 3; i++) {
			// Trigger Mitte verschieben
			var triggerLinks = queueTriggerLinks.shift();
			triggerLinks.position.x += strassenElementAnzahl * 400;
			triggerLinks.__dirtyPosition = true;
			triggerLinks.__dirtyRotation = true;
			triggerLinks.visible = false;
			queueTriggerLinks.push(triggerLinks);

			// Trigger Rechts verschieben
			var triggerMitte = queueTriggerMitte.shift();
			triggerMitte.position.x += strassenElementAnzahl * 400;
			triggerMitte.__dirtyPosition = true;
			triggerMitte.__dirtyRotation = true;
			triggerMitte.visible = false;
			queueTriggerMitte.push(triggerMitte);

			// Trigger Rechts verschieben
			var triggerRechts = queueTriggerRechts.shift();
			triggerRechts.position.x += strassenElementAnzahl * 400;
			triggerRechts.__dirtyPosition = true;
			triggerRechts.__dirtyRotation = true;
			triggerRechts.visible = false;
			queueTriggerRechts.push(triggerRechts);
		}

	});
	szene.add(abschnittsTrigger);

}; 